/**********************************************************
@description:
*File Name:a.c
*Author: ydx
*mail: yudongxiang93@163.com
*Create Time: Fri 25 Apr 2025 03:08:21 PM CST
**********************************************************/
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
	int data;
	struct node* next;
}node;

node* init_node(int data){
	node* n=(node*)malloc(sizeof(node));
	if(!n){
		printf("init_node malloc error!");
		return NULL;
	}
	n->data=data;
	n->next=n;
	return n;
}

void headInsert(node* l,int data){
	node* n=init_node(data);
	if(!n)
		return;
	n->next=l->next;
	l->next=n;
	l->data++;
}
void tailInsert(node* l,int data){
	node* cur=l;
	node* n=init_node(data);
	if(!n)
		return;
	while(cur && cur->next !=l ){
		cur=cur->next;
		continue;
	}
	n->next=l;
	cur->next=n;
	l->data++;


}
void traverselist(node* l){
	node* cur=l->next;
	printf("num=%d\n",l->data);
	while(cur && cur != l){
		printf("%d\n",cur->data);
		cur=cur->next;
	}
}

int main(){
	node* l=init_node(0);
	headInsert(l,1);
	headInsert(l,2);
	headInsert(l,3);
	headInsert(l,4);
	headInsert(l,5);
	headInsert(l,6);
	headInsert(l,7);
	headInsert(l,8);
	tailInsert(l,1);
	tailInsert(l,2);
	tailInsert(l,3);
	tailInsert(l,4);
	tailInsert(l,5);
	tailInsert(l,6);
	tailInsert(l,7);
	tailInsert(l,8);
	traverselist(l);
}
